package ch3oopexer1;
/*一商场(有名称，地址等信息)的会员系统中，有多个会员，用对象数组表示，假设为100个，
会员属性有会员号，姓名，手机号，积分，

0：添加新会员开卡的方法（添加新会员，参数如何处理？）
 方法申明如下：public boolean add(Card c)

1: 尝试加方法：给某一用户涨分的方法。
 方法声明如右： boolean inc(String cardNo,int fen)：如果帐号不存在，返回false*/
public class Market {
    String marketName;
    String address;
    VIP[] vip;
    int acoount = 0;

    public boolean add(VIP v) {
        for (; acoount < vip.length; ) {
            if (vip[acoount] == null) {
                vip[acoount] = v;
                acoount++;
                return true;
            }
            if (acoount == vip.length) {//存在一个问题，当添加的人数超过数组长度不会提示！！！！
                System.out.println("添加失败！");
                return false;
            }
        }
        return false;
    }

    public void show() {
        System.out.println("商场：" + marketName);
        System.out.println("商场地址：" + address);
        System.out.println("会员信息如下：");
    }

    /* 1: 尝试加方法：给某一用户涨分的方法。
     方法声明如右： boolean inc(String cardNo,int fen)：如果帐号不存在，返回false*/
    boolean inc(String number, double score) {
        for (int i = 0; i < acoount; i++) {//存在一个问题，当添加的人数超过数组长度不会提示！！！！这个问题会影响到这个方法！！
        /*if(vip[acoount]==null){
            return false;
        }*/
            if (number.equals(vip[i].number)) {
                vip[i].score += score;
                return true;
            }
        }
        System.out.println("账户不存在！无法增加积分！");
        return false;
    }

    /*2*：增加新会员方法中添加判断，添加新会员时限制会员号不能重复，如果重复，禁止添加。
    提示：添加方法 boolean checkCardNoRepeat(String no)判断是否重复，如果返回true,则重复。*/
    boolean checkCardNoRepeat(String number){
        VIP v = new VIP();//总会出现默认值！！！！！！！！！！！！！！
        for(int j=0;j<acoount;j++){
            if(number.equals(vip[j].number)){
                System.out.println("会员号已经存在，无法添加！");
                return false;
            }else{
                vip[acoount] = v;
                acoount++;
                return true;
            }
        }
        return false;
    }

    /**
     *
     * cardNo 定义兑换礼品的方法
     *   假设
     *      1：100分兑换餐巾纸一包；
     *      2：400分兑换剃须刀一把；
     *      3：1000分兑换炒锅一个；
     *  用户输入卡号和需要兑换的奖品，兑换成功后扣除相应积分(礼品类不需要定义，用String返回即可)；如果帐号不存在，或者积分不够，兑换失败(提示:如果兑换成功,需要扣除相应的积分)。
     *   如果不成功，返回null。
     *
     */
    public String duihuan(String number,int lipingleixing){
        for(int k=0;k<acoount;k++){
                if (number.equals(vip[k].number) && vip[k].score >= 100) {
                    if(lipingleixing==1){
                        vip[k].score -=100;
                        System.out.println("成功兑换了餐巾纸一包，您剩余的积分为："+ vip[k].score);
                    }if(lipingleixing==2){
                        vip[k].score  -=400;
                        System.out.println("成功兑换了剃须刀一把，您剩余的积分为："+ vip[k].score);
                    }if(lipingleixing==3){
                        vip[k].score  -=1000;
                        System.out.println("成功兑换了炒锅一个；，您剩余的积分为："+ vip[k].score);
                    }
                    return "Y";
                } else {
                    return null;
                }
            }

        return null;
    }


}